// function add(x, y, f) {
//     return f(x) + f(y);
// }
// console.log(add(-9,9,Math.abs));

// // Map
// // Map是一组键值对的结构，具有极快的查找速度。
// // var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
// // m.get('Michael'); // 95

// // map()传入的参数是pow，即函数对象本身。
// function pow(x) {
//     return x*x;
// }
// var arr=[1,2,3,4,5,6,7];
// // var res=arr.map(pow);
// // console.log(res);

// // var a=[];
// // for (let i = 0; i < arr.length; i++) {
// //     a.push(pow(arr[i])) 
// // }
// // console.log(a);

// console.log(arr.map(String));//把数值变成字符串

// reduce
// [x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)//累计
// var a=[1,2,3,4];
// console.log(a.reduce(function (x,y) {
//     return x+y;
// }));

'use strict';

function product(arr) {
    var as=[];
  as=arr.reduce(function (x,y) {
    return x*y
});

}
测试:
if (product([1, 2, 3, 4]) === 24 && product([0, 1, 2]) === 0 && product([99, 88, 77, 66]) === 44274384) {
    console.log('测试通过!');
}
else {
    console.log('测试失败!');
}

// 'use strict';
// // 练习:利用map和reduce操作实现一个string2int()函数：
// function string2int(s) {
//       var index=s.split("");
//     function toInt(abcd) {
//         return 1*abcd;
//     }
//     var mapindex=index.map(toInt);
//     var result=mapindex.reduce(
//         function(a,b) {
//             return a*10+b;
//         }
//     )
//     return result;

// }

// // 测试:
// if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) {
//     if (string2int.toString().indexOf('parseInt') !== -1) {
//         console.log('请勿使用parseInt()!');
//     } else if (string2int.toString().indexOf('Number') !== -1) {
//         console.log('请勿使用Number()!');
//     } else {
//         console.log('测试通过!');
//     }
// }
// else {
//     console.log('测试失败!');
// }